ZGlmZiAtLWdpdCBhL2JvYXJkL2VORVQvTWFrZWZpbGUgYi9ib2FyZC9lTkVUL01ha2VmaWxlCmluZGV4IGJmNTczNmEuLjU4OGQyMWQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VORVQvTWFrZWZpbGUKKysrIGIvYm9hcmQvZU5FVC9NYWtlZmlsZQpAQCAtMzIsNiArMzIsNyBAQAogTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCiBDT0JKUy15CSs9IGVORVQubworQ09CSlMtJChDT05GSUdfUENJKSArPSBlTkVUX3BjaS5vCiBTT0JKUy15CSs9IGVORVRfc3RhcnQxNi5vCiBTT0JKUy15CSs9IGVORVRfc3RhcnQubwogCmRpZmYgLS1naXQgYS9ib2FyZC9lTkVUL2VORVRfcGNpLmMgYi9ib2FyZC9lTkVUL2VORVRfcGNpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgwYThmZQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2VORVQvZU5FVF9wY2kuYwpAQCAtMCwwICsxLDk1IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA4CisgKiBHcmFlbWUgUnVzcywgZ3JhZW1lLnJ1c3NAZ21haWwuY29tLgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIgPGRhbmllbEBvbWljcm9uLnNlPi4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPHBjaS5oPgorI2luY2x1ZGUgPGFzbS9wY2kuaD4KKyNpbmNsdWRlIDxhc20vaWMvcGNpLmg+CisKK3N0YXRpYyB2b2lkIHBjaV9lbmV0X2ZpeHVwX2lycShzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsIHBjaV9kZXZfdCBkZXYpCit7CisJLyogYSBjb25maWd1cmFibGUgbGlzdHMgb2YgSVJRcyB0byBzdGVhbCB3aGVuIHdlIG5lZWQgb25lICovCisJc3RhdGljIGludCBpcnFfbGlzdFtdID0geworCQlDT05GSUdfU1lTX0ZJUlNUX1BDSV9JUlEsCisJCUNPTkZJR19TWVNfU0VDT05EX1BDSV9JUlEsCisJCUNPTkZJR19TWVNfVEhJUkRfUENJX0lSUSwKKwkJQ09ORklHX1NZU19GT1JUSF9QQ0lfSVJRCisJfTsKKwlzdGF0aWMgaW50IG5leHRfaXJxX2luZGV4PTA7CisKKwl1Y2hhciB0bXBfcGluOworCWludCBwaW47CisKKwlwY2lfaG9zZV9yZWFkX2NvbmZpZ19ieXRlKGhvc2UsIGRldiwgUENJX0lOVEVSUlVQVF9QSU4sICZ0bXBfcGluKTsKKwlwaW4gPSB0bXBfcGluOworCisJcGluIC09IDE7IC8qIFBDSSBjb25maWcgc3BhY2UgdXNlIDEtYmFzZWQgbnVtYmVyaW5nICovCisJaWYgKHBpbiA9PSAtMSkgeworCQlyZXR1cm47IC8qIGRldmljZSB1c2Ugbm8gaXJxICovCisJfQorCisJLyogbWFwIGRldmljZSBudW1iZXIgKyAgcGluIHRvIGEgcGluIG9uIHRoZSBzYzUyMCAqLworCXN3aXRjaCAoUENJX0RFVihkZXYpKSB7CisJY2FzZSAxMjoJLyogRmlyc3QgRXRoZXJuZXQgQ2hpcCAqLworCQlwaW4gKz0gU0M1MjBfUENJX0lOVEE7CisJCWJyZWFrOworCisJY2FzZSAxMzoJLyogU2Vjb25kIEV0aGVybmV0IENoaXAgKi8KKwkJcGluICs9IFNDNTIwX1BDSV9JTlRCOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXJldHVybjsKKwl9CisKKwlwaW4gJj0gMzsgLyogd3JhcCBhcm91bmQgKi8KKworCWlmIChzYzUyMF9wY2lfaW50c1twaW5dID09IC0xKSB7CisJCS8qIHJlLXJvdXRlIG9uZSBpbnRlcnJ1cHQgZm9yIHVzICovCisJCWlmIChuZXh0X2lycV9pbmRleCA+IDMpIHsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAocGNpX3NjNTIwX3NldF9pcnEocGluLCBpcnFfbGlzdFtuZXh0X2lycV9pbmRleF0pKSB7CisJCQlyZXR1cm47CisJCX0KKwkJbmV4dF9pcnFfaW5kZXgrKzsKKwl9CisKKwlpZiAoLTEgIT0gc2M1MjBfcGNpX2ludHNbcGluXSkgeworCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ19ieXRlKGhvc2UsIGRldiwgUENJX0lOVEVSUlVQVF9MSU5FLAorCQkJCQkgICBzYzUyMF9wY2lfaW50c1twaW5dKTsKKwl9CisJcHJpbnRmKCJmaXh1cF9pcnE6IGRldmljZSAlZCBwaW4gJWMgaXJxICVkXG4iLAorCSAgICAgICBQQ0lfREVWKGRldiksICdBJyArIHBpbiwgc2M1MjBfcGNpX2ludHNbcGluXSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgZW5ldF9ob3NlID0geworCWZpeHVwX2lycTogcGNpX2VuZXRfZml4dXBfaXJxLAorfTsKKwordm9pZCBwY2lfaW5pdF9ib2FyZCh2b2lkKQoreworCXBjaV9zYzUyMF9pbml0KCZlbmV0X2hvc2UpOworfQo=